/**
 * ---------------------------
 * Time: 2017/8/6 23:14.
 * Author: Cangshi
 * View: http://palerock.cn
 * ---------------------------
 */
define(
    ['app', '../../template-dao'],
    function (app, TemplateDao) {
        app.factory('templateDao', function (INDEXED_DB, PromiseUtil) {

            // init
            var templateDao = INDEXED_DB.templateDao = new TemplateDao();
            var dexieDB = INDEXED_DB.dexieDB;
            var templates = dexieDB.maintainTemplate;

            /**
             * 添加一个模板
             * @param template
             * @param cb
             */
            templateDao.addTemplate = function (template, cb) {
                if (template.templateId == null) {
                    delete template.templateId;
                }
                var promise = templates.add(template);
                PromiseUtil.parserCallBack(promise, cb, '添加模板[name = ' + template.templateName + ']')
            };

            /**
             * 查询所有模板（不包括默认模板）
             */
            templateDao.findAllTemplates = function (cb) {
                var promise = templates.toArray();
                PromiseUtil.parserCallBack(promise, cb, '查询所有模板');
            };

            /**
             * 根据id查询模板
             * @param id
             * @param cb
             */
            templateDao.findByTemplateId = function (id, cb) {
                var promise = templates.where('templateId').equals(id).toArray();
                PromiseUtil.parserCallBack(promise, cb, '查询[id = ' + id + ']的模板');
            };

            /**
             * 更新模板
             * @param template
             * @param cb
             */
            templateDao.updateTemplateSelective = function (template, cb) {
                var promise = templates.put(template);
                PromiseUtil.parserCallBack(promise, cb, '更新[id = ' + template.templateId + ']的模板')
            };

            /**
             * 根据id删除模板
             * @param id
             * @param cb
             */
            templateDao.deleteByTemplateId = function (id, cb) {
                var promise = templates.delete(id);
                PromiseUtil.parserCallBack(promise, cb, '删除模板[id = ' + id + ']成功');
            };

            return templateDao;
        })
    }
);